// src/http.js
import axios from 'axios'
import useAuthStore from '@/stores/authStore'

// 创建 Axios 实例
const http = axios.create({
    baseURL: import.meta.env.VITE_API_URL, // 替换为你的 API 基础 URL
    timeout: 10000, // 请求超时时间
    withCredentials: true, // 确保跨域请求时发送 cookie
    headers: {
        // 'Content-Type': 'application/json',
        // 你可以在这里添加其他全局请求头，比如授权头
    }
})

// 请求拦截器
http.interceptors.request.use(
    (config) => {
        const authStore = useAuthStore()
        const token = authStore.getToken()
        // 在发送请求之前做些什么，比如添加认证头
        if(token) {
            config.headers['Authorization'] = `Bearer ${token}`;
        }
        if(config.url?.indexOf("/common/upload")>-1) {
            config.headers['Content-Type'] = 'multipart/form-data';
        }
        return config
    },
    (error) => {
        // 对请求错误做些什么
        return Promise.reject(error)
    }
)

// 响应拦截器
http.interceptors.response.use(
    (response) => {
        // 对响应数据做点什么
        // 比如，你可以统一处理错误码或消息格式
        return response.data
    },
    (error) => {
        // 对响应错误做点什么
        // 比如，你可以在这里进行错误提示或重定向
        if (error.response) {
            // 服务器返回了一个状态码，并且状态码触发了错误处理
            console.error('Response Error:', error.response.status, error.response.data)
        } else if (error.request) {
            // 请求已经发出，但没有收到响应
            console.error('Request Error:', error.request)
        } else {
            // 其他错误
            console.error('Error Message:', error.message)
        }
        return Promise.reject(error)
    }
)

// 导出封装的 Axios 实例
export default http
